home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / SeqPups / appsrc / autoseq.src / Programmers-Notes.txt < prev    next >
Text File  |  1996-07-05  |  6KB  |  155 lines

  1. ================================================================================
  2. PROGRAMMERS' NOTES                                                    80 columns
  3.                                                                     tab=4 spaces
  4. for    anal
  5.     analall
  6.     bpdagg
  7.     CSequence
  8.     CPeakList
  9.     CTrace
  10.     CTraceFile
  11.     FileFormat
  12.     autoseq
  13.     xlate
  14.     RIncludes
  15.     RInlines
  16.     DNA
  17.  
  18.     This document describes conventions and nomenclature for the sources of the
  19. programs mentioned above.  This package comprises the sources developed for the
  20. manipulation and analysis of chromatogram data generated by automated sequencing
  21. of DNA.
  22.  
  23.     The project was undertaken for the requirements of a Masters Degree in
  24. Computer Science and Bioengineering Certificate at Washington University in
  25. St. Louis, Missouri, USA.  The thesis advisor was David States.
  26.  
  27.     Everything described herein has been released to the public domain.  Bug
  28. reports, bug fixes, comments, suggestions, extensions, and the like are
  29. desired.
  30.  
  31. Contact Addresses:
  32. Reece Hart                                David States
  33. reece@ibc.wustl.edu                        states@ibc.wustl.edu
  34. ================================================================================
  35.  
  36. CONTENTS
  37. --------
  38.     PROGRAM DESCRIPTIONS
  39.     SOURCE DESCRIPTIONS
  40.     CONVENTIONS
  41.     KNOWN PROBLEMS, QUIRKS, AND IMPROVEMENT SUGGESTIONS
  42.  
  43.  
  44. PROGRAM DESCRIPTIONS
  45. --------------------
  46. analyze    - Runs a complete analysis suite on a named abi file.  See script header
  47. for usage.
  48.  
  49. analall    - Runs anal on all abi files found in the current directory.  See script
  50. header for usage.
  51.  
  52. bpdagg    - aggregates bpd files for individual bases into a single list sorted
  53. by base position.
  54.  
  55. autoseq - an interface to the above modules.  It peforms essentially no
  56. calculations itself, but instead directs the classes to perform the actions
  57. themselves.
  58.  
  59. xlate - coverts ABI to SCF; the only advantage of this over makeSCF is that
  60. input format may be specified to be ABI0, which is the /raw/ data obtained from
  61. the sequencer.  This will probably not be of general interest.
  62.  
  63.  
  64. SOURCE DESCRIPTIONS
  65. -------------------
  66. All source was written in C++ using AT&T C++ 3.01.  I have noted errors during
  67. compilation with g++, but have not yet attempted to correct them.
  68.  
  69. CSequence - A simple bidirectional linearly-linked list template.  It supports
  70. essentially any data type.
  71.  
  72. CPeakList - Defines the PeakRec structure (class) and some simple methods.
  73. CPeakList is built on a CSequence<PeakRec> and implements many methods for the
  74. manipulation and analysis of a collection of peaks.
  75.  
  76. CTrace - A template class which stores a large sequence (array) of any
  77. numerical type.  It performs many statistical and analytical functions such as
  78. derivatives (returned as a CTrace<double>, from which subsequent derivatives
  79. may be obtained), peak picking, scaling, translating, and I/O.
  80.  
  81. CTraceFile - Assembles a collection of CTrace's and a number of other
  82. data members which represents any of several formats of chromatograms from
  83. automated DNA sequencing experiments.  It currently supports reading and
  84. writing Standard Chromatogram Format (SCF) files, and reading any of the
  85. data sets within an Applied Biosystems, Inc. (ABI) file.
  86.  
  87. FileFormat - Simple routines for the determination and description of 
  88. chromatogram file formats.
  89.  
  90. RIncludes - a set of common definitions, typedefs, etc.
  91.  
  92. RInlines - a set of useful inline routines
  93.  
  94. DNA - some simple DNA definitions and types
  95.  
  96.  
  97. CONVENTIONS
  98. -----------
  99. *    I've tried to provide a consistent coding style and this style relies
  100. heavily on tab = 4 spaces.
  101.  
  102. KNOWN PROBLEMS, QUIRKS, AND IMPROVEMENT SUGGESTIONS
  103. ---------------------------------------------------
  104. *    The baseline command in autoseq is ambiguous: It actually /translates/ the
  105. data.  There should be separate baseline and translation flags.
  106. *    Assimilation of the peaks may have a problem because it inherits the
  107. peak records from the individual traces.  That is, it may be the case that
  108. two lists point to the same PeakRec.  This requires some investigation.
  109. *    For a series of peaks pairwise separated by less than some minimum
  110. separation, exactly one peak is chosen.  For series which span a region in which
  111. more than one real peak exists, some peaks will be discarded.  Therefore,
  112. there's a balance between parameters which result in abundant peaks (thus
  113. resulting in a large series of peaks in close pairwise proximity) and minimum
  114. separation criteria which prune peaks with 'reasonable' separation. For small
  115. minSeparation arguments (ie. <=5), this generally isn't a problem and only the
  116. peaks which result from noise are tossed (as was originally desired).
  117. *    In several cases, I've not made new class where I probably should have.
  118. For instance (ahem), I use the same CPeakList for both the peaks of individual
  119. traces and the assimilated list.  However, the assimilated list really has no
  120. need for the statistical methods (in fact, their application to this list would
  121. be meaningless).  Pruning peaks should not be a tracefile function, however
  122. this was necessary because the assimilated list needs to know about all 4 of
  123. the individual trace's peak lists.  Thus, these classes are really not as
  124. absolutely modular as they could/should be.
  125. *    The ted source has sparse references to a 'bottom' variable.  I've assumed
  126. that this is only affect this has is to invert the trace and edit the reverse-
  127. compliment of the sequence.  I'm not aware of any other affects this has on
  128. the trace data.
  129. *    Class hierarchy
  130.     The current hierarchy is quite simple and is described above.  It has worked
  131. well for prototyping this system and is functional even for non-protyping
  132. purposes.  However, I believe that a more abstract interpretation of the types
  133. is now appropriate (and fairly easily done with the sources provided).  
  134.     CSequence
  135.         more complete list operators and iterators (sort, doforeach, etc.)
  136.     CArray
  137.         sampling data
  138.         stat fx
  139.         sorting
  140.         histograms
  141.         derivatives
  142.         peak picking
  143.     CTrace: CArray
  144.     CTraceSet
  145.         collection of CTraces
  146.         orthogonalization
  147.         group calls to CArray methods (ie. CalcStats, PickPeaks)
  148.         resolve peaks
  149.     CTraceFile
  150.         CTraceSet
  151.         reading and writing tracefiles
  152. Peaks could be stored in a CPeakList as is done currently, or in a
  153. CSequence<>.  Different peak recs should be used for trace v. set peaks.
  154. Copy constructors for each class.
  155.